#ifndef __MYRPCCONTROLLER_H__
#define __MYRPCCONTROLLER_H__

#include <google/protobuf/service.h>
#include <string>

/**
 * @brief 用于跟踪RPC方法执行过程中的状态并控制方法的执行，例如取消调用
 * 
 */
class MyRPCController : public google::protobuf::RpcController
{
public:
    MyRPCController();
    void Reset();
    bool Failed() const;
    std::string ErrorText() const;
    void SetFailed(const std::string& reason);

    void StartCancel();
    bool IsCanceled() const;
    void NotifyOnCancel(google::protobuf::Closure* callback);
private:
    bool m_failed; //RPC服务端执行方法过程中的状态，是否失败
    std::string m_errText; // RPC执行过程中的错误信息
};

#endif